var sandbox;
(function (sandbox) {
    var DependencyProperty = (function () {
        function DependencyProperty(name, propertyType, ownerType, propertyMetadata) {
            this._name = name;
            this._propertyType = propertyType;
            this._ownerType = ownerType;
            this._propertyMetadata = propertyMetadata;
        }
        Object.defineProperty(DependencyProperty.prototype, "Name", {
            get: function () {
                return this._name;
            },
            enumerable: true,
            configurable: true
        });

        Object.defineProperty(DependencyProperty.prototype, "PropertyType", {
            get: function () {
                return this._propertyType;
            },
            enumerable: true,
            configurable: true
        });

        Object.defineProperty(DependencyProperty.prototype, "OwnerType", {
            get: function () {
                return this._ownerType;
            },
            enumerable: true,
            configurable: true
        });

        Object.defineProperty(DependencyProperty.prototype, "DefaultMetadata", {
            get: function () {
                return this._propertyMetadata;
            },
            enumerable: true,
            configurable: true
        });

        DependencyProperty.Register = function (name, propertyType, ownerType, typeMetadata, validateValueCallback) {
            var dependencyProperty = new DependencyProperty(name, propertyType, ownerType, typeMetadata);

            DependencyProperty.DependencyProperties[name] = dependencyProperty;

            return dependencyProperty;
        };
        return DependencyProperty;
    })();
    sandbox.DependencyProperty = DependencyProperty;

    var PropertyMetadata = (function () {
        function PropertyMetadata(defaultValue, propertyChangedCallback, coerceValueCallback) {
            this._propertyChangedCallback = propertyChangedCallback;
            this._coerceValueCallback = coerceValueCallback;
        }
        Object.defineProperty(PropertyMetadata.prototype, "GetPropertyChangedCallback", {
            get: function () {
                return this._propertyChangedCallback;
            },
            enumerable: true,
            configurable: true
        });

        Object.defineProperty(PropertyMetadata.prototype, "GetCoerceValueCallback", {
            get: function () {
                return this._coerceValueCallback;
            },
            enumerable: true,
            configurable: true
        });
        return PropertyMetadata;
    })();
    sandbox.PropertyMetadata = PropertyMetadata;

    var DependencyPropertyChangedEventArgs = (function () {
        function DependencyPropertyChangedEventArgs(property, oldValue, newValue) {
            this._property = property;
            this._oldValue = oldValue;
            this._newValue = newValue;
        }
        Object.defineProperty(DependencyPropertyChangedEventArgs.prototype, "property", {
            get: function () {
                return this._property;
            },
            enumerable: true,
            configurable: true
        });

        Object.defineProperty(DependencyPropertyChangedEventArgs.prototype, "newValue", {
            get: function () {
                return this._newValue;
            },
            enumerable: true,
            configurable: true
        });

        Object.defineProperty(DependencyPropertyChangedEventArgs.prototype, "oldValue", {
            get: function () {
                return this._oldValue;
            },
            enumerable: true,
            configurable: true
        });
        return DependencyPropertyChangedEventArgs;
    })();
    sandbox.DependencyPropertyChangedEventArgs = DependencyPropertyChangedEventArgs;
})(sandbox || (sandbox = {}));

function TextPropertyChangedCallback(d, e) {
    var inputElement = d;
    inputElement.value = e.newValue;
}

function TextCoerceValueCallback(d, baseValue) {
    var inputElement = d;
}

var TextPropertyMetadata = new sandbox.PropertyMetadata("", TextPropertyChangedCallback, TextCoerceValueCallback);

HTMLInputElement.prototype.TextProperty = sandbox.DependencyProperty.Register("Text", String.prototype, HTMLInputElement.prototype, TextPropertyMetadata, null);
//# sourceMappingURL=SendBox.js.map
